import axiosInstance from '/@/request/axios.ts'
import { CommonVo } from '/@/type/CommonVo.ts'

export namespace SysMenuApi {
  /**
   * 获取当前用户拥有的菜单森林
   */
  export const forest = () => {
    return axiosInstance({
      url: '/sysMenu/forest',
      method: 'get',
    })
  }

  export const forestAll = () => {
    return axiosInstance({
      url: '/sysMenu/forestAll',
      method: 'get',
    })
  }

  export interface MenuType extends CommonVo {
    id?: number // 主键id
    parentId?: number // 上级id
    name?: string // 组件唯一别名
    componentPath?: string // 组件的导包路径;相对于组件的基准目录，基准目录单独配置，开头不加反斜杠
    path?: string // 路由地址;开头要加反斜杠，可以多级
    redirect?: string // 重定向地址;当这个字段不为空表示有重定向，开启重定向后component字段失效
    extend?: any // 扩展信息;Json格式
    isShow?: boolean // 是否可见;是否可见。隐藏后可以访问页面，但不在菜单列表显示。true可见，false不可见，null不可见

    // meta内容
    title?: string // 中文名
    type?: 'PAGE' | 'CATALOG' // 类型;页面PAGE或目录CATALOG
    icon?: string // 图标
    color?: string // 主题颜色
    layoutName?: string // 布局页面的组件名称。布局页面的组件名称，表示当前记录在哪个布局页面内。仅顶级有效

    children?: MenuType[] // 子菜单
  }
}
